package com.ymm.lulutong.mapper;

import com.ymm.lulutong.entity.Shipper;
import com.ymm.lulutong.response.ShipperInfoResponse;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.cache.annotation.Cacheable;

import java.util.List;

/**
 * @author guorui
 */
@Mapper
public interface ShipperProfileMapper {

    /**
     * 添加货主用户
     *
     * @param shipper 货主信息
     */
    void add(Shipper shipper);

    /**
     * 根据条件更新货主信息
     *
     * @param shipper 新的货主信息
     */
    void updateByIdOnCondition(Shipper shipper);

    /**
     * 根据id获取货主信息
     *
     * @param shipperId 货主id
     */
    Shipper selectById(Long shipperId);

    /**
     * 根据手机号获取货主信息
     *
     * @param phone 手机号
     * @return 货主信息
     */
    Shipper selectByPhoneNumber(String phone);

    /**
     * 查询是否存在shipperId
     * @param shipperId 货主id
     * @return 是否存在
     */
    boolean existShipperId(Long shipperId);

    /**
     * 查询是否存在手机号
     * @param phoneNumber 手机号
     * @return 是否存在
     */
    boolean existPhoneNumber(String phoneNumber);

    /**
     * @param shipperIds 货主id列表
     * @return 货主列表
     */
    List<Shipper> listByIds(List<Long> shipperIds);

    /**
     * 分页查询
     *
     * @param offset 偏移量
     * @param size   记录数
     * @return 货主列表
     */
    List<Shipper> listAllByLimit(int offset, int size);

    /**
     * 按条件分页查询
     *
     * @param offset       偏移量
     * @param size         记录数
     * @param queryShipper 查询条件
     * @return 货主列表
     */
    List<Shipper> listAllByLimitOnCondition(Shipper queryShipper, int offset, int size);

    ShipperInfoResponse getShipperInfoByPhoneNumber(String phoneNumber);
}
